# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.Content.V21.Model.Collection do
  @moduledoc """
  The collection message.

  ## Attributes

  *   `customLabel0` (*type:* `String.t`, *default:* `nil`) - Label that you assign to a collection to help organize bidding and reporting in Shopping campaigns. [Custom label](https://support.google.com/merchants/answer/9674217)
  *   `customLabel1` (*type:* `String.t`, *default:* `nil`) - Label that you assign to a collection to help organize bidding and reporting in Shopping campaigns.
  *   `customLabel2` (*type:* `String.t`, *default:* `nil`) - Label that you assign to a collection to help organize bidding and reporting in Shopping campaigns.
  *   `customLabel3` (*type:* `String.t`, *default:* `nil`) - Label that you assign to a collection to help organize bidding and reporting in Shopping campaigns.
  *   `customLabel4` (*type:* `String.t`, *default:* `nil`) - Label that you assign to a collection to help organize bidding and reporting in Shopping campaigns.
  *   `featuredProduct` (*type:* `list(GoogleApi.Content.V21.Model.CollectionFeaturedProduct.t)`, *default:* `nil`) - This identifies one or more products associated with the collection. Used as a lookup to the corresponding product ID in your product feeds. Provide a maximum of 100 featuredProduct (for collections). Provide up to 10 featuredProduct (for Shoppable Images only) with ID and X and Y coordinates. [featured_product attribute](https://support.google.com/merchants/answer/9703736)
  *   `headline` (*type:* `list(String.t)`, *default:* `nil`) - Your collection's name. [headline attribute](https://support.google.com/merchants/answer/9673580)
  *   `id` (*type:* `String.t`, *default:* `nil`) - Required. The REST ID of the collection. Content API methods that operate on collections take this as their collectionId parameter. The REST ID for a collection is of the form collectionId. [id attribute](https://support.google.com/merchants/answer/9649290)
  *   `imageLink` (*type:* `list(String.t)`, *default:* `nil`) - The URL of a collection’s image. [image_link attribute](https://support.google.com/merchants/answer/9703236)
  *   `language` (*type:* `String.t`, *default:* `nil`) - The language of a collection and the language of any featured products linked to the collection. [language attribute](https://support.google.com/merchants/answer/9673781)
  *   `link` (*type:* `String.t`, *default:* `nil`) - A collection’s landing page. URL directly linking to your collection's page on your website. [link attribute](https://support.google.com/merchants/answer/9673983)
  *   `mobileLink` (*type:* `String.t`, *default:* `nil`) - A collection’s mobile-optimized landing page when you have a different URL for mobile and desktop traffic. [mobile_link attribute](https://support.google.com/merchants/answer/9646123)
  *   `productCountry` (*type:* `String.t`, *default:* `nil`) - [product_country attribute](https://support.google.com/merchants/answer/9674155)
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :customLabel0 => String.t() | nil,
          :customLabel1 => String.t() | nil,
          :customLabel2 => String.t() | nil,
          :customLabel3 => String.t() | nil,
          :customLabel4 => String.t() | nil,
          :featuredProduct =>
            list(GoogleApi.Content.V21.Model.CollectionFeaturedProduct.t()) | nil,
          :headline => list(String.t()) | nil,
          :id => String.t() | nil,
          :imageLink => list(String.t()) | nil,
          :language => String.t() | nil,
          :link => String.t() | nil,
          :mobileLink => String.t() | nil,
          :productCountry => String.t() | nil
        }

  field(:customLabel0)
  field(:customLabel1)
  field(:customLabel2)
  field(:customLabel3)
  field(:customLabel4)
  field(:featuredProduct, as: GoogleApi.Content.V21.Model.CollectionFeaturedProduct, type: :list)
  field(:headline, type: :list)
  field(:id)
  field(:imageLink, type: :list)
  field(:language)
  field(:link)
  field(:mobileLink)
  field(:productCountry)
end

defimpl Poison.Decoder, for: GoogleApi.Content.V21.Model.Collection do
  def decode(value, options) do
    GoogleApi.Content.V21.Model.Collection.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.Content.V21.Model.Collection do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
